Final Block Group ReportΒΆ
Data collected by: Maile & TQΒΆ
from pathlib import Path
from ast import literal_eval
import pandas as pd
import seaborn.objects as so
from seaborn import axes_style
import seaborn as sns
import matplotlib.pyplot as plt
from numpy import nan
def extract(row, key):
dct = literal_eval(row)
value = dct[key]
if value =='':
value = nan
return
else:
return float(value)
import folium
from folium.plugins import HeatMap
from folium.plugins import MarkerCluster
pth = Path('../data')
pth
canvas = pd.read_csv( pth / 'last_canvas.csv')
graffiti = pd.read_csv(pth / 'last_graffiti.csv')
Cleaning our dataΒΆ
Before separating our own collected data we want to ensure that we are cleaning up both datasets. To do this we chose to decide which categories we will focus on.
canvas.isna().any(axis='rows')
id False created_at False uploaded_at False created_by False title False at_canvas False coords False date_entry_canvas False property_type False property_use False surveillance_status False surveillance False canvas_location False canvas_nature False surface_material False graffiti_removal False viewing_potential False accessibility False notes True dtype: bool
None of the categories have null we can do the same for our graffiti data.
graffiti.isna().any(axis='rows')
id False canvas_id False created_at False uploaded_at False created_by False title False num False date_recorded False width False height False type False technique False marker_type True nip_type True other True num_colors True colors False nature_graffiti False transcribable False message True transcription True dtype: bool
For the categories that have null we want to change it to "NA"
graffiti.marker_type.fillna('none')
graffiti.nip_type.fillna('none')
graffiti.other.fillna('none')
graffiti.num_colors.fillna('none')
graffiti.message.fillna('none')
graffiti.transcription.fillna('none')
0 none
1 none
2 Caras
3 none
4 none
...
3861 ?\nTUG A BOAT 9.8.7.6.5.4.3.2.10.0-1-2-3-4-5-6...
3862 none
3863 17\n716
3864 17 \n716
3865 Kilroy was here
Name: transcription, Length: 3866, dtype: object
Separating the dataΒΆ
The name of the my data set has been set to filtered_canvas and filtered_graffiti because I have filtered out the rest of the class data. The names for the rest of the class data will be set to clsscanv and clssgraf.
sel = graffiti.created_by == 'mailekai@uw.edu'
sel2 = graffiti.created_by == 'vutquynh@uw.edu'
grp_block = sel | sel2
filtered_graffiti = graffiti.copy().loc[grp_block, :]
filtered_graffiti
sel_1 = canvas.created_by == 'mailekai@uw.edu'
sel_2 = canvas.created_by == 'vutquynh@uw.edu'
grp_block_can = sel_1 | sel_2
filtered_canvas = canvas.copy().loc[grp_block_can, :]
filtered_canvas
clsscanv = canvas.loc[~grp_block_can, :]
clssgraf = graffiti.loc[~grp_block, :]
How do graffiti locations distribute across property types?ΒΆ
Our data compared to the class seemed to be similar. Most graffiti locations had been public areas. As for with the data we collected a difference I noticed was how we had more industrial areas than the rest of the class. I think this predominantly had to do with location because most of the buildings we had in our block was industrial. For those who had areas within downtown or westlake area probably had different property types or those that got chose a block that happened to be in a more residential area.
Analyzing our data:ΒΆ
print(canvas.columns)
Index(['id', 'created_at', 'uploaded_at', 'created_by', 'title', 'at_canvas',
'coords', 'date_entry_canvas', 'property_type', 'property_use',
'surveillance_status', 'surveillance', 'canvas_location',
'canvas_nature', 'surface_material', 'graffiti_removal',
'viewing_potential', 'accessibility', 'notes'],
dtype='object')
d1 = filtered_canvas[['property_type', 'canvas_location']]
q1 = pd.crosstab(d1.property_type, d1.canvas_location)
graph = q1.plot.bar(title = 'Distribution across property types for Graffiti Locations(collected data)', ylabel= 'Count')
graph.legend(title='Canvas location')
<matplotlib.legend.Legend at 0x7fb11c81d2d0>
mdf = filtered_canvas.merge(graffiti, left_on = 'id', right_on = 'canvas_id', how = 'inner',
suffixes = ('_cv', '_gf')).loc[:,['created_by_cv', 'property_type', 'canvas_location']]
mdf
| created_by_cv | property_type | canvas_location | |
|---|---|---|---|
| 0 | mailekai@uw.edu | industrial | street |
| 1 | mailekai@uw.edu | industrial | street |
| 2 | mailekai@uw.edu | industrial | street |
| 3 | mailekai@uw.edu | industrial | street |
| 4 | mailekai@uw.edu | comercial | alley |
| ... | ... | ... | ... |
| 139 | vutquynh@uw.edu | public | street |
| 140 | vutquynh@uw.edu | public | street |
| 141 | mailekai@uw.edu | public | street |
| 142 | vutquynh@uw.edu | public | street |
| 143 | mailekai@uw.edu | public | street |
144 rows Γ 3 columns
mdf.melt
<bound method DataFrame.melt of created_by_cv property_type canvas_location 0 mailekai@uw.edu industrial street 1 mailekai@uw.edu industrial street 2 mailekai@uw.edu industrial street 3 mailekai@uw.edu industrial street 4 mailekai@uw.edu comercial alley .. ... ... ... 139 vutquynh@uw.edu public street 140 vutquynh@uw.edu public street 141 mailekai@uw.edu public street 142 vutquynh@uw.edu public street 143 mailekai@uw.edu public street [144 rows x 3 columns]>
pivoted_df = mdf.pivot_table(
index='created_by_cv',
columns='canvas_location',
values='property_type',
aggfunc=['count','first']
).reset_index()
pivoted_df = pivoted_df.fillna('None')
pivoted_df
| created_by_cv | count | first | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| canvas_location | alley | bridge | highway | overpass | railroad_tracks | street | alley | bridge | highway | overpass | railroad_tracks | street | |
| 0 | mailekai@uw.edu | 3.0 | 4.0 | 1.0 | 1.0 | 45.0 | 17.0 | comercial | government | public | public | government | industrial |
| 1 | vutquynh@uw.edu | None | 4.0 | 1.0 | None | 59.0 | 9.0 | None | government | public | None | industrial | public |
Analyzing the class dataΒΆ
d1b = clsscanv[['property_type', 'canvas_location']]
q1b = pd.crosstab(d1b.property_type, d1b.canvas_location)
graphb = q1b.plot.bar(title = 'Distribution across property types for Graffiti Locations(class data)', xlabel = 'property types', ylabel= 'Count')
graphb.legend(title='Canvas location')
<matplotlib.legend.Legend at 0x7fb11d174880>
cmdf = clsscanv.merge(graffiti, left_on = 'id', right_on = 'canvas_id', how = 'inner',
suffixes = ('_cv', '_gf')).loc[:,['created_by_cv', 'property_type', 'canvas_location']]
cmdf
| created_by_cv | property_type | canvas_location | |
|---|---|---|---|
| 0 | stasiaa@uw.edu | comercial | street |
| 1 | stasiaa@uw.edu | comercial | street |
| 2 | stasiaa@uw.edu | comercial | street |
| 3 | stasiaa@uw.edu | comercial | street |
| 4 | stasiaa@uw.edu | comercial | street |
| ... | ... | ... | ... |
| 2629 | jazhang0@uw.edu | government | other |
| 2630 | jazhang0@uw.edu | government | street |
| 2631 | jazhang0@uw.edu | government | street |
| 2632 | jazhang0@uw.edu | government | street |
| 2633 | aleciaco@uw.edu | public | street |
2634 rows Γ 3 columns
cmdf.melt
<bound method DataFrame.melt of created_by_cv property_type canvas_location 0 stasiaa@uw.edu comercial street 1 stasiaa@uw.edu comercial street 2 stasiaa@uw.edu comercial street 3 stasiaa@uw.edu comercial street 4 stasiaa@uw.edu comercial street ... ... ... ... 2629 jazhang0@uw.edu government other 2630 jazhang0@uw.edu government street 2631 jazhang0@uw.edu government street 2632 jazhang0@uw.edu government street 2633 aleciaco@uw.edu public street [2634 rows x 3 columns]>
print(pivoted_df.columns)
MultiIndex([('created_by_cv', ''),
( 'count', 'alley'),
( 'count', 'bridge'),
( 'count', 'highway'),
( 'count', 'overpass'),
( 'count', 'railroad_tracks'),
( 'count', 'street'),
( 'first', 'alley'),
( 'first', 'bridge'),
( 'first', 'highway'),
( 'first', 'overpass'),
( 'first', 'railroad_tracks'),
( 'first', 'street')],
names=[None, 'canvas_location'])
pivoted_df = cmdf.pivot_table(
index='created_by_cv',
columns='canvas_location',
values='property_type',
aggfunc=['count','first']
).reset_index()
pivoted_df = pivoted_df.fillna('None')
pivoted_df
| created_by_cv | count | first | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| canvas_location | alley | bridge | highway | indoors | other | overpass | railroad_tracks | roof | street | alley | bridge | highway | indoors | other | overpass | railroad_tracks | roof | street | |
| 0 | aleciaco@uw.edu | None | None | None | None | None | None | None | None | 1.0 | None | None | None | None | None | None | None | None | public |
| 1 | carstonp@uw.edu | 40.0 | None | None | None | None | None | None | None | 40.0 | public | None | None | None | None | None | None | None | government |
| 2 | clarak3@uw.edu | 31.0 | None | None | None | None | None | 7.0 | None | 59.0 | public | None | None | None | None | None | public | None | public |
| 3 | corrales@uw.edu | None | 45.0 | None | None | None | 12.0 | None | None | 52.0 | None | government | None | None | None | public | None | None | public |
| 4 | dhaman@uw.edu | None | None | None | None | 42.0 | None | None | None | 35.0 | None | None | None | None | comercial | None | None | None | comercial |
| 5 | dkhn@uw.edu | 23.0 | None | None | None | 9.0 | 4.0 | None | None | 57.0 | public | None | None | None | public | public | None | None | public |
| 6 | dmoral2@uw.edu | 8.0 | 21.0 | 12.0 | None | None | None | 14.0 | None | 25.0 | industrial | industrial | industrial | None | None | None | industrial | None | comercial |
| 7 | eashelon@uw.edu | 24.0 | None | 22.0 | None | 4.0 | None | 6.0 | None | 24.0 | industrial | None | industrial | None | industrial | None | industrial | None | industrial |
| 8 | emali@uw.edu | None | None | None | 4.0 | None | None | None | None | 81.0 | None | None | None | terrain_vague | None | None | None | None | government |
| 9 | emirob@uw.edu | None | 20.0 | None | None | 5.0 | 46.0 | None | None | 33.0 | None | public | None | None | public | public | None | None | industrial |
| 10 | gabosull@uw.edu | 11.0 | None | 19.0 | None | 12.0 | None | None | None | 35.0 | public | None | public | None | public | None | None | None | public |
| 11 | gjorcz@uw.edu | 6.0 | None | None | None | None | None | None | None | 78.0 | industrial | None | None | None | None | None | None | None | public |
| 12 | haskins7@uw.edu | None | 1.0 | None | None | 6.0 | None | None | None | 69.0 | None | public | None | None | industrial | None | None | None | residential |
| 13 | iwrm@uw.edu | None | None | None | None | 11.0 | 15.0 | None | None | 44.0 | None | None | None | None | public | public | None | None | public |
| 14 | jagudino@uw.edu | 1.0 | None | None | None | None | None | None | None | 12.0 | residential | None | None | None | None | None | None | None | residential |
| 15 | jazhang0@uw.edu | None | None | None | None | 4.0 | None | None | None | 89.0 | None | None | None | None | government | None | None | None | government |
| 16 | jtp13@uw.edu | None | 3.0 | None | None | 4.0 | None | None | None | 6.0 | None | government | None | None | public | None | None | None | government |
| 17 | kgiuli@uw.edu | 16.0 | None | None | 8.0 | 32.0 | None | None | 3.0 | 26.0 | industrial | None | None | public | industrial | None | None | public | comercial |
| 18 | lexingra@uw.edu | 2.0 | None | None | None | None | None | None | None | 70.0 | comercial | None | None | None | None | None | None | None | industrial |
| 19 | lms2005@uw.edu | None | None | None | None | 10.0 | None | None | None | 86.0 | None | None | None | None | public | None | None | None | government |
| 20 | lspenc02@uw.edu | None | None | None | None | 84.0 | None | None | None | 27.0 | None | None | None | None | public | None | None | None | public |
| 21 | makaiol@uw.edu | 13.0 | None | 45.0 | None | 4.0 | None | None | None | 18.0 | residential | None | public | None | residential | None | None | None | public |
| 22 | maxclark@uw.edu | 30.0 | None | None | None | None | None | None | None | 50.0 | public | None | None | None | None | None | None | None | public |
| 23 | modulitz@uw.edu | None | None | None | None | 59.0 | 1.0 | None | None | 20.0 | None | None | None | None | public | government | None | None | public |
| 24 | munaa3@uw.edu | None | None | None | None | 15.0 | None | None | None | 5.0 | None | None | None | None | government | None | None | None | government |
| 25 | nbende3@uw.edu | 2.0 | None | None | None | 20.0 | None | None | None | 58.0 | residential | None | None | None | other | None | None | None | government |
| 26 | niabrice@uw.edu | None | None | None | None | 56.0 | None | None | None | 27.0 | None | None | None | None | public | None | None | None | public |
| 27 | nicraw@uw.edu | None | None | 23.0 | None | 12.0 | None | None | None | 35.0 | None | None | government | None | public | None | None | None | public |
| 28 | owprenti@uw.edu | 6.0 | None | None | None | None | None | None | 1.0 | 83.0 | comercial | None | None | None | None | None | None | comercial | comercial |
| 29 | priyad4@uw.edu | 10.0 | None | None | None | 1.0 | None | None | None | 82.0 | residential | None | None | None | public | None | None | None | public |
| 30 | rgould4@uw.edu | 19.0 | None | 62.0 | None | None | None | None | None | 9.0 | residential | None | public | None | None | None | None | None | public |
| 31 | sonil@uw.edu | None | None | None | 5.0 | 10.0 | None | None | None | 79.0 | None | None | None | other | public | None | None | None | public |
| 32 | stasiaa@uw.edu | 42.0 | None | None | 11.0 | None | None | None | 1.0 | 124.0 | residential | None | None | public | None | None | None | comercial | comercial |
Table Importance:ΒΆ
I think it is important to view these two tables because they both show different comparisons. Within the first table we can see how different the data my block group collected was different from the class regarding the area and type of property. Something I noticed myself was my block had been more predominantly industrial whereas the class had a higher count in public property. I think this specific area is one of the more important comparisons to my block group because often graffiti is found in industrial areas or railside/train track areas.
What about across different canvas types?ΒΆ
From my group's collected data, I noticed that we collected almost all graffiti from train cars or train tracks. As for the class data, the train data is significantly lower than the rest of the canvas types. Our area has the Sound Transit that goes to Tacoma, and we also have the Amtrak that goes all the way to California. So, we saw a wide variety of graffiti and even pieces from artists outside Seattle. In the class data, almost everyones data was from a sign or wall. Which I found interesting because in our location there was not much graffiti on the signs.
d2 = filtered_canvas[['canvas_nature', 'canvas_location']]
q2 = pd.crosstab(d2.canvas_nature, d2.canvas_location)
graph2 = q2.plot.bar(title = 'Distribution across Canvas types(collected)', xlabel = 'canvas types', ylabel= 'count')
graph2.legend(title='Canvas location')
<matplotlib.legend.Legend at 0x7fb11d226560>
Analyzing class dataΒΆ
d2b = clsscanv[['canvas_nature', 'canvas_location']]
q2b = pd.crosstab(d2b.canvas_nature, d2b.canvas_location)
graph2b = q2b.plot.bar(title = 'Distribution across property types for Graffiti Locations(class data)', xlabel = 'property types', ylabel= 'Count')
graph2b.legend(title='Canvas location')
<matplotlib.legend.Legend at 0x7fb11d8d25c0>
How strong is the evidence of graffiti removal?ΒΆ
Within our data, there was not much graffiti removal. Most graffiti was not buffed out. It seemed to be older or artists have tagged those spots for a while. I think that our location had less removal because it was mainly on trains. I think it is harder and more time-consuming to clean each train car when the train cars are usually traveling or being used for transport. Additionally, I thought that since some of our areas are private property or government type they decided to not take down graffiti in those areas because even though it has high visibility, it is not as visible as the freeway. So, maybe the city decided where they want to spend money to remove graffiti since our location was not specifically downtown where more tourists are more inclined to be.
Analyzing the data:ΒΆ
evid2 = canvas['graffiti_removal'].value_counts().reset_index()
evid2
| graffiti_removal | count | |
|---|---|---|
| 0 | N | 622 |
| 1 | Y | 116 |
| 2 | unclear | 33 |
Are graffiti locations very visible to the public?ΒΆ
I think all the locations have high visibility, depending on how you view them. For example, many people commute by light rail and train to work and school. So, those commuting see the graffiti my group had collected. The train cars transport thousands of people every day. But compared to the class, there is probably graffiti on the freeways that more than a thousand people see during rush hour traffic. Compared to people who are walking around campus, still, hundreds of students still pass by graffiti. I think it depends on the canvas type and location to determine how visible an artist's work is.
Analyzing our data:ΒΆ
filtered_canvas.columns
Index(['id', 'created_at', 'uploaded_at', 'created_by', 'title', 'at_canvas',
'coords', 'date_entry_canvas', 'property_type', 'property_use',
'surveillance_status', 'surveillance', 'canvas_location',
'canvas_nature', 'surface_material', 'graffiti_removal',
'viewing_potential', 'accessibility', 'notes'],
dtype='object')
mdf2 = filtered_canvas.merge(graffiti, left_on = 'id', right_on = 'canvas_id', how = 'inner',
suffixes = ('_cv', '_gf')).loc[:,['created_by_cv', 'property_type', 'viewing_potential']]
mdf2
mdf2.melt
pivoted_df = mdf2.pivot_table(
index='created_by_cv',
columns='viewing_potential',
values='property_type',
aggfunc=['count','first']
).reset_index()
pivoted_df = pivoted_df.fillna('None')
pivoted_df
| created_by_cv | count | first | |||||
|---|---|---|---|---|---|---|---|
| viewing_potential | high | low | medium | high | low | medium | |
| 0 | mailekai@uw.edu | 29 | 9 | 33 | government | government | industrial |
| 1 | vutquynh@uw.edu | 63 | 4 | 6 | industrial | government | government |
q4 = filtered_canvas.viewing_potential.value_counts().plot.bar('viewing_potential', 'count', title = 'Visibility of Graffiti (collected)', xlabel = 'Viewing Potential', ylabel = 'Count')
mdf2 = clsscanv.merge(graffiti, left_on = 'id', right_on = 'canvas_id', how = 'inner',
suffixes = ('_cv', '_gf')).loc[:,['created_by_cv', 'property_type', 'viewing_potential']]
mdf2
mdf2.melt
pivoted_df = mdf2.pivot_table(
index='created_by_cv',
columns='viewing_potential',
values='property_type',
aggfunc=['count','first']
).reset_index()
pivoted_df = pivoted_df.fillna('None')
pivoted_df
| created_by_cv | count | first | |||||
|---|---|---|---|---|---|---|---|
| viewing_potential | high | low | medium | high | low | medium | |
| 0 | aleciaco@uw.edu | None | None | 1.0 | None | None | public |
| 1 | carstonp@uw.edu | 60.0 | 10.0 | 10.0 | government | government | public |
| 2 | clarak3@uw.edu | None | 45.0 | 52.0 | None | public | public |
| 3 | corrales@uw.edu | 89.0 | 1.0 | 19.0 | public | comercial | government |
| 4 | dhaman@uw.edu | 73.0 | None | 4.0 | comercial | None | comercial |
| 5 | dkhn@uw.edu | 33.0 | 42.0 | 18.0 | government | public | government |
| 6 | dmoral2@uw.edu | 32.0 | 19.0 | 29.0 | industrial | industrial | industrial |
| 7 | eashelon@uw.edu | 27.0 | 23.0 | 30.0 | industrial | industrial | industrial |
| 8 | emali@uw.edu | None | 12.0 | 73.0 | None | terrain_vague | government |
| 9 | emirob@uw.edu | 3.0 | 46.0 | 55.0 | public | public | public |
| 10 | gabosull@uw.edu | 42.0 | None | 35.0 | public | None | public |
| 11 | gjorcz@uw.edu | 51.0 | 21.0 | 12.0 | public | public | industrial |
| 12 | haskins7@uw.edu | 46.0 | 5.0 | 25.0 | residential | industrial | residential |
| 13 | iwrm@uw.edu | 3.0 | 16.0 | 51.0 | public | public | public |
| 14 | jagudino@uw.edu | 9.0 | None | 4.0 | residential | None | residential |
| 15 | jazhang0@uw.edu | 71.0 | 12.0 | 10.0 | government | government | other |
| 16 | jtp13@uw.edu | 4.0 | 3.0 | 6.0 | public | government | public |
| 17 | kgiuli@uw.edu | None | 43.0 | 42.0 | None | public | public |
| 18 | lexingra@uw.edu | 38.0 | 18.0 | 16.0 | public | industrial | industrial |
| 19 | lms2005@uw.edu | 11.0 | 9.0 | 76.0 | government | government | government |
| 20 | lspenc02@uw.edu | 66.0 | 4.0 | 41.0 | public | public | public |
| 21 | makaiol@uw.edu | 36.0 | 4.0 | 40.0 | public | residential | comercial |
| 22 | maxclark@uw.edu | 28.0 | 10.0 | 42.0 | public | government | public |
| 23 | modulitz@uw.edu | 2.0 | 2.0 | 76.0 | public | government | public |
| 24 | munaa3@uw.edu | 20.0 | None | None | government | None | None |
| 25 | nbende3@uw.edu | 68.0 | None | 12.0 | government | None | other |
| 26 | niabrice@uw.edu | None | None | 83.0 | None | None | public |
| 27 | nicraw@uw.edu | 60.0 | None | 10.0 | public | None | government |
| 28 | owprenti@uw.edu | 40.0 | 32.0 | 18.0 | comercial | comercial | government |
| 29 | priyad4@uw.edu | 51.0 | 4.0 | 38.0 | public | residential | public |
| 30 | rgould4@uw.edu | 48.0 | None | 42.0 | public | None | public |
| 31 | sonil@uw.edu | 79.0 | None | 15.0 | public | None | public |
| 32 | stasiaa@uw.edu | 130.0 | 5.0 | 43.0 | comercial | comercial | comercial |
class4 = clsscanv.viewing_potential.value_counts().plot.bar('viewing_potential', 'count', title = 'Visibility of Graffiti (class)', xlabel = 'Viewing Potential', ylabel = 'Count')
Table Importance:ΒΆ
I thought the representation of this table was also significantly important because it shows how some areas are less visible based on the property type. With the class data, I saw how government property had a high visibility, whereas for my collected data the industrial areas had higher viewing potential because passengers on trains could see the artwork that was on the backside of industrial buildings.
What is Graffiti's Accesibility?ΒΆ
Based on the collected and class data, a lot of the graffiti that was recorded seemed to be very accessible. A large porportion of the graffiti was at a street level meaning it was accessible to get to. I think that high visibility graffiti like 'Heaven spots' are not accessible to get to because of how dangerous it is. But they are high in visibility because of how many people pass by and see the artwork.
access = filtered_canvas.loc [:, 'accessibility'].apply(literal_eval)
access = access.explode()
class1 = access.value_counts().plot.bar(
title='Accessibility of Graffiti (Collected)',
xlabel='Accessibility',
ylabel='Count'
)
Analyzing our data:ΒΆ
Looking at the bar chart of my own data that has been collected we can observe that a majority of the artwork was at a streetlevel. Additionally, the pattern of getting to some of the street level graffiti was that we had to pass through a gate to see it.
mdf3 = filtered_canvas.merge(graffiti, left_on = 'id', right_on = 'canvas_id', how = 'inner',
suffixes = ('_cv', '_gf')).loc[:,['created_by_cv', 'canvas_location', 'accessibility']]
mdf3
mdf3.melt
pivoted_df = mdf3.pivot_table(
index='created_by_cv',
columns='canvas_location',
values='accessibility',
aggfunc=['count','first']
).reset_index()
pivoted_df = pivoted_df.fillna('None')
pivoted_df
| created_by_cv | count | first | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| canvas_location | alley | bridge | highway | overpass | railroad_tracks | street | alley | bridge | highway | overpass | railroad_tracks | street | |
| 0 | mailekai@uw.edu | 3.0 | 4.0 | 1.0 | 1.0 | 45.0 | 17.0 | ['street_Level'] | ['street_Level'] | ['street_Level', 'short_barrier'] | ['street_Level', 'tall_barrier'] | ['street_Level'] | ['street_Level'] |
| 1 | vutquynh@uw.edu | None | 4.0 | 1.0 | None | 59.0 | 9.0 | None | ['street_Level', 'thru_gate'] | ['short_barrier', 'street_Level'] | None | ['street_Level', 'thru_gate'] | ['street_Level'] |
Table Importance:ΒΆ
I think this table is one of the more important ones for my block group because a few of the areas were easy to access but there were a lot of trespassing signs. Additionally, some of them crossed train tracks to get to which I do not advise everyone doing take at their own risk. But some of the most beautiful artwork seemed to require a bit of climbing or going through a gate. From the class data, I found that our data was also similar with a majority of the graffiti collected being at a street level. I think artists tend to do street-level pieces because of the convenience. Whereas a known local Seattle artist like "Dotcom", I've seen a few of his heaven spot pieces on I-5 northbound. Additionally, with the count added you can see the difference between my data and the classes data about the type of area a majority of our graffiti was located.
What is the accessibility of the graffiti being collected?ΒΆ
access2 = clsscanv.loc[:, 'accessibility'].apply(literal_eval)
access2 = access2.explode()
classA = access2.value_counts().plot.bar(
title='Accessibility of Graffiti (Class)',
xlabel='Accessibility',
ylabel='Count'
)
Analyzing our data:ΒΆ
From the class data we can infer that there is multiple ways that graffiti is being accessed. We can see that some is easier to access by street, while harder accessible piecing tend to have a more complicated path to get to. Additionally, we can see that most heavenly spots require going through a gate to get to.
Is graffiti oportunistic or not?ΒΆ
A majority of the class said that there graffiti locations did not have surveillance and I feel that my group did because since we were on government and indsutrial areas there are more security. Also with our areas we tended to go to a few spots that said no trespassing, so by not following the signs we knew that those areas were being watched throughout the day and night.
Analyzing our data:ΒΆ
To ensure that our data is clean we decided to make sure the # of surveillances of each canvas would return 0 if there is no surveillance.
def counter(row, col):
'''given a column, col, it will take the row the row entry and make sure to turn it into an array to count the numbers of elements inside, It would reutn 0 if there is nothing(string/arr)'''
if "," not in row[col]:
return 0
arr = row[col].split(",")
return len(arr)
filtered_canvas['surveillance_count'] = filtered_canvas.apply(counter, col='surveillance', axis='columns')
q5 = filtered_canvas.surveillance_count.value_counts().reset_index()
q5 = q5.sort_values(by='surveillance_count').reset_index()
q5.plot.bar('surveillance_count', 'count', title = 'Surveillance Counts in Canvases(collected)', xlabel=' Surveillance Count', ylabel= 'Count')
<Axes: title={'center': 'Surveillance Counts in Canvases(collected)'}, xlabel=' Surveillance Count', ylabel='Count'>
Analyzing class data:ΒΆ
clsscanv.loc[:, 'surveillance_count'] = clsscanv.apply(counter, col='surveillance', axis='columns')
q5b = clsscanv.surveillance_count.value_counts().reset_index()
q5b = q5b.sort_values(by='surveillance_count').reset_index()
q5b.plot.bar('surveillance_count', 'count', title = 'Surveillance Counts in Canvases(class)', xlabel=' Surveillance Count', ylabel= 'Count')
/tmp/ipykernel_2336/353488732.py:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy clsscanv.loc[:, 'surveillance_count'] = clsscanv.apply(counter, col='surveillance', axis='columns')
<Axes: title={'center': 'Surveillance Counts in Canvases(class)'}, xlabel=' Surveillance Count', ylabel='Count'>
What is the distribution of graffiti types across your block group?ΒΆ
My group found a lot of tags that kind of seemed to be like something quick to put out there. But when we more specifically got into the trains cars and tracks I noticed way more throw-ups and the different amounts of creativity and styles that were produced. I also started to see who was from Seattle and who wasn't on the train cars because of the different tags and throwup styles.
q6 = filtered_graffiti.type.value_counts().plot.bar('type', 'count', title = "Distribution of Graffiti Types (collected)", xlabel = 'type of graffiti', ylabel='Count')
The class data:ΒΆ
q6b = clssgraf.type.value_counts().plot.bar('type', 'count', title = "Distribution of Graffiti Types (class)", xlabel = 'type of graffiti', ylabel='Count')
With regards to the nature of the message how do these distribute percentagewise?ΒΆ
I think throw-ups are more common in graffiti culture and that is what makes graffiti so unique and different from other types of artwork. I also thought that tags are also the quickest to produce without getting arrested for vandalism. Same thing for throw-ups if they are planned it looks easier to do a throw-up rather than a piece.
d7 = filtered_graffiti[['type', 'message']]
q7 = pd.crosstab(d7.type, d7.message, normalize=True)
g7 = q7.plot.bar(title = 'Nature of the message percent distribution', xlabel= 'Type of Graffiti', ylabel= 'Percent')
g7.legend(title = 'Nature of message')
<matplotlib.legend.Legend at 0x7fb11c8e8310>
The class data:ΒΆ
d7b = clssgraf[['type', 'message']]
q7b = pd.crosstab(d7b.type, d7b.message, normalize=True)
g7b = q7b.plot.bar(title = 'Nature of the message percent distribution', xlabel= 'Type of Graffiti', ylabel= 'Percent')
g7b.legend(title = 'Nature of message')
<matplotlib.legend.Legend at 0x7fb11c8e8430>
What are the most common techniques used?ΒΆ
For my groups data most technique was with a spray as for the class had been a marker. I think this is because a majority of the canvas type was on a sign, so using a marker is easier to tag on a sign rather than a spray and having it drip everywhere.
q8 = filtered_graffiti.technique.value_counts().plot.bar(title = 'Count of Graffiti Techniques (collected)', xlabel = 'Techniques', ylabel = 'Count')
The class data:ΒΆ
q8b = clssgraf.technique.value_counts().plot.bar(title = 'Count of Graffiti Techniques (class)', xlabel = 'Techniques', ylabel = 'Count')
Is black the most prevalent color in your block group? What about other colors?ΒΆ
My group had more white than black. While the classes majority was black. I think black and white are pretty close because they are easy colors to obtain. Analyzing our data:
d9 = filtered_graffiti.loc [:, 'colors'].apply(literal_eval)
d9 = d9.explode()
g9 = d9.value_counts().plot.bar(title= 'Count of Graffiti colors (collected)', ylabel = 'Count', xlabel = 'Colors')
d9b = clssgraf.loc [:, 'colors'].apply(literal_eval)
d9b = d9b.explode()
g9b = d9b.value_counts().plot.bar(title= 'Count of Graffiti colors (class)', ylabel = 'Count', xlabel = 'Colors')
How do the results obtained for questions: compare against those obtained from the rest of your classmates? What does this tell you?ΒΆ
For all of the questions, I think the results and outcomes we got compared to other data that was collected had been significantly different. I also think base off of the location was a big reason why everyone had different types of techniques, colors, types of graffiti, and properties. Our location was near the stadium and south of the Starbucks and the city of Seattle lighting. Since our area was predominantly industrial, government and commercial most of our data had come from the train tracks and the trains or giant storage containers. But since we had found a majority of our work from train tracks and on the train cars a lot of work was not from Seattle and we noticed some had area codes or mentioned California because those trains travel all the way down the west coast.
Type x Numbers of ColorsΒΆ
I decided to break down the type of graffiti with the number of colors because I feel like often certain types of pieces tend to have more or less color. Within throw-ups, I noticed that they usually always have two colors because throw-ups give off the 3-D look effect. Whereas a tag is usually always one color because it is something quick and fast. When it comes to pieces I noticed that they usually have a lot of colors and take more time into the type of artwork that they are displaying.
graffiti_summary = pd.crosstab(
clssgraf['type'],
clssgraf['num_colors'],
margins=True,
margins_name="Total"
)
graffiti_summary
| num_colors | 1 | 2 | 3-5 | 6+ | Total |
|---|---|---|---|---|---|
| type | |||||
| blockbuster | 4 | 7 | 9 | 0 | 20 |
| edging | 1 | 1 | 0 | 0 | 2 |
| hollow | 118 | 7 | 1 | 0 | 126 |
| other | 41 | 23 | 5 | 0 | 69 |
| pasteUp | 4 | 4 | 2 | 0 | 10 |
| piece | 3 | 22 | 84 | 31 | 140 |
| stencil | 3 | 1 | 0 | 0 | 4 |
| tag | 2849 | 69 | 18 | 4 | 2940 |
| throwUp | 35 | 243 | 91 | 1 | 370 |
| wildstyle | 0 | 2 | 20 | 2 | 24 |
| Total | 3058 | 379 | 230 | 38 | 3705 |
How do you find these tables important?ΒΆ
I think these three tables were the most important because I found them the easiest to compare my data to the class data. Throughout the three of these graphs, we can see a lot of the differences in a much more visual way compared to the tables above with numbers. I think they are the most relevant to my block group because I feel that a part of graffiti culture sort of started on train tracks or subways. A majority of my block group had been on the train track areas so it is interesting to compare to others who may not have had areas of train tracks.
Different comparisons using class dataΒΆ
Canvas Locations x Types (Class data)ΒΆ
canvas_types_summary = pd.crosstab(
clsscanv['canvas_location'],
clssgraf['type'],
margins=False
)
canvas_types_summary.plot(kind='bar', stacked=False, figsize=(10, 6), title="Canvas Locations x Graffiti Types")
plt.xlabel('Canvas Location')
plt.ylabel('Count of Graffiti Types')
plt.legend(title='Graffiti Type', loc='upper left')
plt.show()
Property Type x Types (Class data)ΒΆ
property_types_summary = pd.crosstab(
clsscanv['property_type'],
clssgraf['type'],
margins=False
)
property_types_summary.plot(kind='bar', stacked=False, figsize=(10, 6), title="Property Types x Graffiti Types")
plt.xlabel('Property Type')
plt.ylabel('Count of Graffiti Types')
plt.legend(title='Graffiti Type', loc='upper left')
plt.show()
Viewing Potential x Types (Class Data)ΒΆ
viewing_types_summary = pd.crosstab(
clsscanv['viewing_potential'],
clssgraf['type'],
margins=False
)
viewing_types_summary.plot(kind='bar', stacked=False, figsize=(10, 6), title="Viewing Potential x Graffiti Types")
plt.xlabel('Viewing Potential')
plt.ylabel('Count of Graffiti Types')
plt.legend(title='Graffiti Type', loc='upper left')
plt.show()
Stacked bar charts (Class data)ΒΆ
canvas_types_summary = pd.crosstab(
clsscanv['canvas_location'],
clssgraf['type'],
margins=False
)
canvas_types_summary.plot(kind='bar', stacked=True, figsize=(10, 6), title="Canvas Locations x Graffiti Types (Exploded)")
plt.xlabel('Canvas Location')
plt.ylabel('Count of Graffiti Types')
plt.legend(title='Graffiti Type', loc='upper left')
plt.show()
viewing_types_summary = pd.crosstab(
clsscanv['viewing_potential'],
clssgraf['type'],
margins=False
)
viewing_types_summary.plot(kind='bar', stacked=True, figsize=(10, 6), title="Viewing Potential x Graffiti Types")
plt.xlabel('Viewing Potential')
plt.ylabel('Count of Graffiti Types')
plt.legend(title='Graffiti Type', loc='upper center')
plt.show()
Let's use seaborn with our dataΒΆ
sns.set_style('whitegrid')
All data of property types & viewing potentialΒΆ
What are you representing?ΒΆ
I decided to use all of the class data to show a representation of the counts of which types of property were identified as high, medium and low visibility. I thought this was important because we could see and sort of decipher what properties are most popular when it comes to graffiti work. I thought this graph did a good representation of splitting up each property type individually to help me and others have a clear understanding of where graffiti artists are putting up there work in Seattle.
What I have learned from this chart is that not a lot of artist are putting work in residential areas. I know that residential areas are more disrespectful place to do throwups or tagging but it made me curious if neighborhood parks or walls along resdiential areas are also not getting tagged as well. I never realized how low viewing potential in residential areas were, until I made this chart.
sns.displot(data=canvas, x='viewing_potential', hue='canvas_location', multiple='stack',
col = 'viewing_potential',
row='property_type');
Distribution of my block groups graffitiΒΆ
What did the SODO area provide differently than other areas in Seattle?ΒΆ
From the two maps created below, I observed that primarily railside or train track areas were more popular for graffiti. A majority of the graffiti from SODO had street-level canvas locations, so it makes sense for a majority of the artwork to be on a train track or industrial area. Another observation I have noticed based on the map was that there are a few overpasses and bridges in those areas that had artwork. Since SODO is an industrial area, it is pretty common to see graffiti artwork around here because of the big plain walls and the trains. To answer this question, I decided to use the final week of data to analyze what everyone else in my class was doing. It was interesting to see if my peers had seen as much graffiti as I had or if the type of graffiti they saw was different. I felt that my data was a bit different because the trains travel to different states. So, I potentially was seeing artwork from outside of the Seattle area. As for my classmates, I could have only been seeing local artists. I think my data and code help visualize a difference in areas. My group was mainly industrial on the trackside. As for my classmates, they may have had only residential while I had zero. Walking in these industrial areas was not common, but since a lot of public transportation routes used these paths, I think that's how our area was highly viewed.
What made the counts in my block group different from other groups? How were these observations different from others?ΒΆ
Some groups may have collected more graffiti than my group, but an observation I made was that areas such as Seattle Center, South Judkins St, and Symphony Station area were also popular areas with high counts of graffiti. I am more surprised to see that Seattle Center even has a lot of graffiti because I figured since it is more of a tourist spot, the city would take it down. As for if it was from an artist's perspective, I could see it as the perfect opportunity to let travelers see the artists of Seattle. From a few of the videos in class, I think that artists could think that putting up their work in higher tourist areas can gain them recognition to be published in articles or videos. Similar to the ones we watched in class and read about, the same artwork I learned in class is also someone else's work being recognized. Additionally, I believe that my data counts could have been higher because a typical stereotype for graffiti is on a subway or wall. In certain areas of the city, you do not see the trains or have big industrial walls, so the graffiti ought to be different. From the tables and charts above, we can see the different impacts of property use. Since housing is used every day, I doubt someone would tag your house. As for the backsides of industrial areas, vendors/businesses may not notice graffiti work until a week later. Although the property is in use, it is less private, like a house. I think our counts show how different types of property in use can affect the amount of graffiti in the area.
What did we learn?ΒΆ
Throughout this investigation, it made me understand how it was more common to see a throw-up in my area, whereas other areas had different types of graffiti based on property and location. I think that in more residential areas, the graffiti was bound to be smaller, so you'd more likely see a tag. Whereas in downtown, you might see throwup tags or more hollows because those areas have higher populations of people. I think throw-ups take a longer time to display, so when doing them, you need to be quick and efficient without getting caught. Industrial areas are perfect for that because not many buildings or places have guards there to stop. Whereas in downtown, the security is higher or residential, the property is not as public and more private.
keep_canvas = ['id', 'coords']
keep_graffiti = ['canvas_id', 'type']
df = (canvas.loc[:,keep_canvas]
.assign(lat= canvas.coords.apply(extract, key='latitude')) #apply function and create a column with latitude
.assign(long=canvas.coords.apply(extract, key='longitude')) #apply function and create a column with latitude
.dropna(subset=['lat', 'long']) # remove anyrow entries with no lat or long
.merge(graffiti.loc[:,keep_graffiti], left_on='id', right_on='canvas_id', how='inner')
)
# my block group
center_lat, center_lon = 47.578701, -122.335922
fmap = folium.Map(
location=[center_lat, center_lon],
zoom_start=14,
width='40%',
control_scale=True
)
marker_cluster = MarkerCluster(name='graffiti').add_to(fmap)
for indx, row in df.iterrows():
# create marker
folium.Marker(location = [row.lat, row.long], # location of each graffiti
popup = row.type, # identify the popup with each type
icon = folium.Icon(color='red', icon='pencil') # create an icon
).add_to(marker_cluster)
fmap
locs = df.loc [:, ['lat', 'long']].values.tolist()
locs
[[47.661376, -122.332019], [47.661376, -122.332019], [47.661376, -122.332019], [47.661376, -122.332019], [47.661376, -122.332019], [47.661376, -122.332019], [47.661376, -122.332019], [47.661376, -122.332019], [47.661376, -122.332019], [47.661376, -122.332019], [47.661376, -122.332019], [47.661376, -122.332019], [47.661376, -122.332019], [47.661265, -122.331316], [47.630416, -122.320324], [47.630416, -122.320324], [47.630416, -122.320324], [47.630416, -122.320324], [47.630416, -122.320324], [47.630416, -122.320324], [47.630162, -122.320196], [47.629446, -122.320254], [47.629446, -122.320254], [47.629446, -122.320254], [47.629446, -122.320254], [47.629446, -122.320254], [47.629446, -122.320254], [47.629446, -122.320254], [47.629446, -122.320254], [47.629116, -122.320231], [47.629116, -122.320231], [47.628739, -122.320073], [47.628739, -122.320073], [47.628739, -122.320073], [47.628739, -122.320073], [47.628739, -122.320073], [47.628739, -122.320073], [47.628739, -122.320073], [47.628739, -122.320073], [47.628739, -122.320073], [47.628739, -122.320073], [47.628739, -122.320073], [47.591846, -122.304082], [47.581934, -122.301046], [47.581934, -122.301046], [47.581934, -122.301046], [47.581934, -122.301046], [47.581934, -122.301046], [47.581934, -122.301046], [47.581934, -122.301046], [47.581934, -122.301046], [47.581934, -122.301046], [47.581934, -122.301046], [47.618581, -122.319632], [47.618581, -122.319632], [47.618581, -122.319632], [47.618581, -122.319632], [47.618581, -122.319632], [47.618581, -122.319632], [47.618581, -122.319632], [47.618581, -122.319632], [47.618581, -122.319632], [47.618581, -122.319632], [47.618581, -122.319632], [47.618581, -122.319632], [47.618581, -122.319632], [47.606656, -122.330188], [47.606656, -122.330188], [47.577919, -122.322999], [47.577919, -122.322999], [47.577919, -122.322999], [47.577919, -122.322999], [47.577919, -122.322999], [47.577919, -122.322999], [47.577919, -122.322999], [47.577919, -122.322999], [47.578041, -122.323006], [47.578041, -122.323006], [47.578041, -122.323006], [47.581008, -122.300483], [47.581008, -122.300483], [47.581008, -122.300483], [47.581008, -122.300483], [47.581008, -122.300483], [47.581008, -122.300483], [47.581008, -122.300483], [47.581008, -122.300483], [47.581008, -122.300483], [47.581008, -122.300483], [47.661503, -122.331484], [47.661503, -122.331484], [47.661503, -122.331484], [47.661503, -122.331484], [47.661503, -122.331484], [47.661503, -122.331484], [47.661503, -122.331484], [47.661681, -122.331875], [47.661681, -122.331875], [47.661555, -122.331798], [47.661555, -122.331798], [47.661555, -122.331798], [47.661555, -122.331798], [47.661555, -122.331798], [47.661555, -122.331798], [47.661555, -122.331798], [47.661549, -122.331461], [47.661549, -122.331461], [47.661549, -122.331461], [47.662767, -122.31254], [47.662767, -122.31254], [47.662767, -122.31254], [47.662767, -122.31254], [47.662767, -122.31254], [47.662767, -122.31254], [47.662767, -122.31254], [47.662767, -122.31254], [47.662767, -122.31254], [47.662767, -122.31254], [47.662769, -122.312534], [47.662769, -122.312534], [47.662769, -122.312534], [47.662769, -122.312534], [47.662769, -122.312534], [47.662769, -122.312534], [47.662769, -122.312534], [47.662769, -122.312534], [47.662769, -122.312534], [47.662769, -122.312534], [47.598551, -122.325799], [47.598551, -122.325799], [47.598551, -122.325799], [47.598623, -122.325654], [47.598429, -122.325754], [47.598429, -122.325754], [47.598429, -122.325754], [47.598429, -122.325754], [47.598429, -122.325754], [47.598429, -122.325754], [47.598524, -122.325702], [47.598524, -122.325702], [47.598524, -122.325702], [47.598524, -122.325702], [47.598718, -122.325641], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.598535, -122.325849], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.591691, -122.31993], [47.598615, -122.325878], [47.598615, -122.325878], [47.598615, -122.325878], [47.598615, -122.325878], [47.598611, -122.325769], [47.598611, -122.325769], [47.598611, -122.325769], [47.598611, -122.325769], [47.621948, -122.345141], [47.593387, -122.318932], [47.593387, -122.318932], [47.593387, -122.318932], [47.593387, -122.318932], [47.598472, -122.326108], [47.598472, -122.326108], [47.598472, -122.326108], [47.598421, -122.325937], [47.593585, -122.318655], [47.621982, -122.345121], [47.621982, -122.345121], [47.621885, -122.344358], [47.621885, -122.344358], [47.621885, -122.344358], [47.621972, -122.344319], [47.621972, -122.344319], [47.621721, -122.344951], [47.621754, -122.344834], [47.621754, -122.344834], [47.591251, -122.302774], [47.591251, -122.302774], [47.591251, -122.302774], [47.591251, -122.302774], [47.591251, -122.302774], [47.591251, -122.302774], [47.591251, -122.302774], [47.620742, -122.345217], [47.620742, -122.345217], [47.591218, -122.303012], [47.591218, -122.303012], [47.591218, -122.303012], [47.620943, -122.34514], [47.620943, -122.34514], [47.620943, -122.34514], [47.620818, -122.345353], [47.620818, -122.345353], [47.620818, -122.345353], [47.680467, -122.321855], [47.680467, -122.321855], [47.680467, -122.321855], [47.680467, -122.321855], [47.680467, -122.321855], [47.680275, -122.321651], [47.680275, -122.321651], [47.680275, -122.321651], [47.680275, -122.321651], [47.680275, -122.321651], [47.680275, -122.321651], [47.680275, -122.321651], [47.680275, -122.321651], [47.680208, -122.321838], [47.679536, -122.321911], [47.661764, -122.33173], [47.661764, -122.33173], [47.661764, -122.33173], [47.661764, -122.33173], [47.661764, -122.33173], [47.645878, -122.333741], [47.645878, -122.333741], [47.645878, -122.333741], [47.645878, -122.333741], [47.645878, -122.333741], [47.645878, -122.333741], [47.645878, -122.333741], [47.645878, -122.333741], [47.645878, -122.333741], [47.645878, -122.333741], [47.645878, -122.333741], [47.645878, -122.333741], [47.646092, -122.333753], [47.646092, -122.333753], [47.646092, -122.333753], [47.646101, -122.333671], [47.646101, -122.333671], [47.651157, -122.330547], [47.651157, -122.330547], [47.651157, -122.330547], [47.65109, -122.33055], [47.65109, -122.33055], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.65113, -122.330551], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651698, -122.329821], [47.651778, -122.329597], [47.651778, -122.329597], [47.651778, -122.329597], [47.651778, -122.329597], [47.651778, -122.329597], [47.651778, -122.329597], [47.652504, -122.328831], [47.652504, -122.328831], [47.668493, -122.315331], [47.668493, -122.315331], [47.668493, -122.315331], [47.668623, -122.314657], [47.668623, -122.314657], [47.668653, -122.313637], [47.668653, -122.313637], [47.668535, -122.313372], [47.668535, -122.313372], [47.668535, -122.313372], [47.581, -122.334083], [47.581, -122.334083], [47.581, -122.334083], [47.581, -122.334083], [47.668335, -122.313943], [47.668335, -122.313943], [47.668335, -122.313943], [47.668343, -122.314261], [47.668343, -122.314261], [47.668343, -122.314261], [47.66835, -122.314256], [47.66835, -122.314256], [47.589139, -122.333333], [47.589139, -122.333333], [47.589139, -122.333333], [47.668397, -122.313551], [47.668397, -122.313551], [47.668397, -122.313551], [47.668397, -122.313551], [47.668397, -122.313551], [47.668397, -122.313551], [47.668475, -122.313609], [47.668475, -122.313609], [47.668475, -122.313609], [47.668462, -122.313265], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.606718, -122.330257], [47.60673, -122.330256], [47.60673, -122.330256], [47.60673, -122.330256], [47.60673, -122.330256], [47.60673, -122.330256], [47.60673, -122.330256], [47.60673, -122.330256], [47.609957, -122.330586], [47.609957, -122.330586], [47.609957, -122.330586], [47.609957, -122.330586], [47.609957, -122.330586], [47.61028, -122.330569], [47.61028, -122.330569], [47.61028, -122.330569], [47.61028, -122.330569], [47.608942, -122.331132], [47.608942, -122.331132], [47.608942, -122.331132], [47.581557, -122.30051], [47.581557, -122.30051], [47.581557, -122.30051], [47.581557, -122.30051], [47.581843, -122.301016], [47.581843, -122.301016], [47.581843, -122.301016], [47.581843, -122.301016], [47.581843, -122.301016], [47.581843, -122.301016], [47.62896, -122.340546], [47.629043, -122.340636], [47.629043, -122.340636], [47.629043, -122.340636], [47.629043, -122.340636], [47.661297, -122.313814], [47.661297, -122.313814], [47.661297, -122.313814], [47.661297, -122.313814], [47.661297, -122.313814], [47.661297, -122.313814], [47.661297, -122.313814], [47.661297, -122.313814], [47.661297, -122.313814], [47.661297, -122.313814], [47.661263, -122.313562], [47.661263, -122.313562], [47.661263, -122.313562], [47.661263, -122.313562], [47.661263, -122.313562], [47.661263, -122.313562], [47.661263, -122.313562], [47.661263, -122.313562], [47.661263, -122.313562], [47.661263, -122.313562], [47.624287, -122.345073], [47.624287, -122.345073], [47.624287, -122.345073], [47.624322, -122.345073], [47.624322, -122.345073], [47.624322, -122.345073], [47.624322, -122.345073], [47.624322, -122.345073], [47.624326, -122.345073], [47.624307, -122.345076], [47.624307, -122.345076], [47.624307, -122.345076], [47.624284, -122.345027], [47.624284, -122.345027], [47.624284, -122.345027], [47.624284, -122.345027], [47.624284, -122.345027], [47.624268, -122.344967], [47.624268, -122.344967], [47.624268, -122.344967], [47.624301, -122.344973], [47.624301, -122.344973], [47.624301, -122.344973], [47.624301, -122.344973], [47.622167, -122.345778], [47.622147, -122.345861], [47.599095, -122.325774], [47.599095, -122.325774], [47.599095, -122.325774], [47.599176, -122.325875], [47.599176, -122.325875], [47.599424, -122.326682], [47.591424, -122.302925], [47.591424, -122.302925], [47.591424, -122.302925], [47.591424, -122.302925], [47.599172, -122.326206], [47.59927, -122.326489], [47.599169, -122.326695], [47.591475, -122.302992], [47.591475, -122.302992], [47.591475, -122.302992], [47.591475, -122.302992], [47.591475, -122.302992], [47.591475, -122.302992], [47.599187, -122.327359], [47.599187, -122.327359], [47.599187, -122.327359], [47.599089, -122.327032], [47.599089, -122.327032], [47.599147, -122.327254], [47.599147, -122.327254], [47.599147, -122.327254], [47.599233, -122.327317], [47.599233, -122.327317], [47.599233, -122.327317], [47.599233, -122.327317], [47.646443, -122.334297], [47.646443, -122.334297], [47.646443, -122.334297], [47.646519, -122.334341], [47.646519, -122.334341], [47.646519, -122.334341], [47.67875, -122.324467], [47.67875, -122.324467], [47.67875, -122.324467], [47.678372, -122.324282], [47.677952, -122.323813], [47.678029, -122.323279], [47.678029, -122.323279], [47.677102, -122.32293], [47.676331, -122.322089], [47.676433, -122.32189], [47.676433, -122.32189], [47.676433, -122.32189], [47.676433, -122.32189], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.631306, -122.320137], [47.630313, -122.317151], [47.630313, -122.317151], [47.630313, -122.317151], [47.630313, -122.317151], [47.630313, -122.317151], [47.630313, -122.317151], [47.630313, -122.317151], [47.630313, -122.317151], [47.630313, -122.317151], [47.630313, -122.317151], [47.629242, -122.318222], [47.629242, -122.318222], [47.629242, -122.318222], [47.629242, -122.318222], [47.629242, -122.318222], [47.629242, -122.318222], [47.629242, -122.318222], [47.629242, -122.318222], [47.629242, -122.318222], [47.629242, -122.318222], [47.628612, -122.316918], [47.628612, -122.316918], [47.628612, -122.316918], [47.628612, -122.316918], [47.628612, -122.316918], [47.628612, -122.316918], [47.628612, -122.316918], [47.628612, -122.316918], [47.628612, -122.316918], [47.628612, -122.316918], [47.630636, -122.341237], [47.630636, -122.341237], [47.630636, -122.341237], [47.630636, -122.341237], [47.630636, -122.341237], [47.630636, -122.341237], [47.630636, -122.341237], [47.630636, -122.341237], [47.630636, -122.341237], [47.630636, -122.341237], [47.630636, -122.341237], [47.630636, -122.341237], [47.630636, -122.341237], [47.630781, -122.341145], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651936, -122.32952], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.651988, -122.329427], [47.652528, -122.328806], [47.652528, -122.328806], [47.652528, -122.328806], [47.652528, -122.328806], [47.652528, -122.328806], [47.652528, -122.328806], [47.652528, -122.328806], [47.653037, -122.328363], [47.653037, -122.328363], [47.653037, -122.328363], [47.653037, -122.328363], [47.653037, -122.328363], [47.653037, -122.328363], [47.653037, -122.328363], [47.653332, -122.328186], [47.653332, -122.328186], [47.653332, -122.328186], [47.653332, -122.328186], [47.653332, -122.328186], [47.653332, -122.328186], [47.653332, -122.328186], [47.653332, -122.328186], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.606366, -122.330587], [47.661086, -122.330882], [47.576283, -122.325671], [47.576283, -122.325671], [47.576283, -122.325671], [47.576283, -122.325671], [47.577075, -122.325571], [47.577075, -122.325571], [47.577075, -122.325571], [47.577075, -122.325571], [47.577075, -122.325571], [47.577075, -122.325571], [47.577046, -122.325068], [47.577298, -122.325357], [47.577298, -122.325357], [47.577298, -122.325357], [47.577298, -122.325357], [47.577878, -122.326836], [47.577878, -122.326836], [47.577878, -122.326836], [47.577878, -122.326836], [47.577878, -122.326836], [47.577878, -122.326836], [47.577878, -122.326836], [47.577878, -122.326836], [47.577878, -122.326836], [47.577878, -122.326836], [47.578123, -122.32662], [47.578123, -122.32662], [47.577862, -122.326892], [47.577862, -122.326892], [47.577862, -122.326892], [47.577859, -122.327059], [47.577859, -122.327059], [47.577859, -122.327059], [47.577859, -122.327059], [47.577859, -122.327059], [47.577859, -122.327059], [47.577859, -122.327059], [47.577859, -122.327059], [47.577859, -122.327059], [47.577859, -122.327059], [47.661224, -122.331869], [47.661273, -122.331926], [47.661293, -122.335688], [47.662598, -122.329007], [47.662598, -122.329007], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.657773, -122.315147], [47.657773, -122.315147], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.579169, -122.332136], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.57875, -122.332278], [47.599983, -122.324343], [47.60006, -122.323489], [47.60006, -122.323489], [47.599977, -122.324397], [47.599977, -122.324397], [47.581627, -122.30072], [47.581627, -122.30072], [47.581627, -122.30072], [47.581627, -122.30072], [47.581627, -122.30072], [47.581627, -122.30072], [47.581254, -122.300692], [47.581254, -122.300692], [47.581254, -122.300692], [47.581254, -122.300692], [47.599989, -122.328101], [47.599989, -122.328101], [47.600264, -122.328332], [47.600264, -122.328332], [47.600113, -122.328288], [47.600113, -122.328288], [47.600113, -122.328288], [47.600113, -122.328288], [47.600113, -122.328288], [47.600113, -122.328288], [47.600113, -122.328288], [47.610906, -122.330837], [47.610906, -122.330837], [47.610906, -122.330837], [47.610906, -122.330837], [47.610906, -122.330837], [47.610906, -122.330837], [47.610906, -122.330837], [47.610906, -122.330837], [47.610906, -122.330837], [47.663671, -122.312614], [47.663671, -122.312614], [47.663671, -122.312614], [47.663671, -122.312614], [47.663671, -122.312614], [47.663671, -122.312614], [47.663671, -122.312614], [47.663671, -122.312614], [47.663671, -122.312614], [47.663671, -122.312614], [47.66353, -122.312472], [47.66353, -122.312472], [47.66353, -122.312472], [47.66353, -122.312472], [47.66353, -122.312472], [47.66353, -122.312472], [47.66353, -122.312472], [47.66353, -122.312472], [47.66353, -122.312472], [47.66353, -122.312472], [47.590848, -122.302607], [47.590858, -122.302563], [47.590858, -122.302563], [47.590858, -122.302563], [47.591082, -122.302711], [47.64592, -122.333473], [47.64592, -122.333473], [47.64592, -122.333473], [47.64592, -122.333473], [47.64592, -122.333473], [47.64592, -122.333473], [47.64592, -122.333473], [47.64592, -122.333473], [47.645914, -122.33327], [47.645914, -122.33327], [47.645914, -122.33327], [47.645875, -122.333241], [47.645828, -122.333137], [47.646024, -122.33346], [47.646024, -122.33346], [47.646024, -122.33346], [47.646024, -122.33346], [47.646024, -122.33346], [47.646024, -122.33346], [47.646024, -122.33346], [47.646024, -122.33346], [47.646024, -122.33346], [47.646024, -122.33346], [47.646024, -122.33346], [47.646024, -122.33346], [47.646024, -122.33346], [47.646033, -122.333513], [47.646033, -122.333513], [47.646066, -122.333468], [47.646066, -122.333468], [47.64769, -122.335256], [47.64769, -122.335256], [47.64769, -122.335256], [47.661433, -122.334295], [47.661433, -122.334295], [47.661433, -122.334295], [47.661433, -122.334295], [47.661433, -122.334295], [47.661433, -122.334295], [47.661433, -122.334295], [47.661433, -122.334295], [47.661462, -122.334273], [47.661462, -122.334273], [47.661462, -122.334273], [47.661462, -122.334273], [47.661462, -122.334273], [47.661433, -122.334241], [47.661433, -122.334241], [47.661433, -122.334241], [47.661433, -122.334241], [47.661433, -122.334241], [47.661433, -122.334241], [47.661433, -122.334241], [47.661433, -122.334241], [47.661433, -122.334241], [47.661433, -122.334241], [47.66146, -122.334229], [47.66149, -122.332816], [47.661539, -122.332493], [47.613824, -122.329949], [47.613824, -122.329949], [47.613824, -122.329949], [47.613824, -122.329949], [47.613824, -122.329949], [47.613824, -122.329949], [47.613824, -122.329949], [47.609992, -122.331575], [47.609992, -122.331575], [47.608835, -122.331092], [47.608835, -122.331092], [47.608835, -122.331092], [47.608835, -122.331092], [47.608835, -122.331092], [47.608835, -122.331092], [47.654461, -122.326718], [47.654461, -122.326718], [47.654461, -122.326718], [47.654461, -122.326718], [47.654461, -122.326718], [47.654461, -122.326718], [47.654461, -122.326718], [47.654461, -122.326718], [47.654461, -122.326718], [47.654461, -122.326718], [47.669209, -122.31318], [47.669209, -122.31318], [47.669209, -122.31318], [47.669209, -122.31318], [47.669, -122.313205], [47.669, -122.313205], [47.668455, -122.312991], [47.668455, -122.312991], [47.61675, -122.31999], [47.61675, -122.31999], [47.61675, -122.31999], [47.617202, -122.320085], [47.617202, -122.320085], [47.617202, -122.320085], [47.617202, -122.320085], [47.617004, -122.319659], [47.617004, -122.319659], [47.617112, -122.319697], [47.617112, -122.319697], [47.617112, -122.319697], [47.617112, -122.319697], [47.617112, -122.319697], [47.617112, -122.319697], [47.617112, -122.319697], [47.617112, -122.319697], [47.617112, -122.319697], [47.617112, -122.319697], [47.617112, -122.319697], [47.598955, -122.327478], [47.598955, -122.327478], [47.598955, -122.327478], [47.598955, -122.327478], [47.598955, -122.327478], [47.598955, -122.327478], [47.598955, -122.327478], [47.598955, -122.327478], [47.599078, -122.327043], [47.599078, -122.327043], [47.599078, -122.327043], [47.598786, -122.325092], [47.598786, -122.325092], [47.598786, -122.325092], [47.598786, -122.325092], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.661455, -122.331642], [47.600452, -122.328868], [47.600452, -122.328868], [47.600452, -122.328868], [47.600452, -122.328868], [47.600452, -122.328868], [47.600452, -122.328868], [47.600353, -122.329116], [47.600353, -122.329116], [47.600795, -122.328649], [47.601189, -122.329158], [47.589569, -122.307113], [47.589569, -122.307113], [47.589569, -122.307113], [47.589569, -122.307113], [47.589569, -122.307113], [47.589569, -122.307113], [47.58932, -122.305954], [47.58932, -122.305954], [47.58932, -122.305954], [47.58932, -122.305954], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.617533, -122.319968], [47.581156, -122.300477], [47.581156, -122.300477], [47.581156, -122.300477], [47.581156, -122.300477], [47.581156, -122.300477], [47.581156, -122.300477], [47.581278, -122.300646], [47.581278, -122.300646], [47.581278, -122.300646], [47.581278, -122.300646], [47.664545, -122.313555], [47.664545, -122.313555], [47.664545, -122.313555], [47.664545, -122.313555], [47.664545, -122.313555], [47.664545, -122.313555], ...]
fmap = folium.Map(
location=[center_lat, center_lon],
zoom_start=14,
width='40%',
control_scale=True
)
HeatMap(data=locs,
radius=10,
gradient = {1.0: 'red', 0.75:'violet', 0.5:'orange', 0.25:'yellow'},
overlay=False).add_to(fmap)
<folium.plugins.heat_map.HeatMap at 0x7fb11357ab30>
fmap
Summary:ΒΆ
What I have learned about graffiti in my block group is how diverse the community is. I noticed a few artwork that had more of the Chicano style. I remember learning in class how that originated from California, and with the Amtrak train consistently passing by, it was no surprise to see those types of artwork. Another thing I learned from my block group was the stories graffiti has behind it. I sometimes saw couples work with tags, and sometimes I saw inspirational messages being put out. Lastly, what I thought was the biggest thing I learned was how location does matter. After doing this project, I could see visually and statistically how areas are different. Additionally, I also saw how location is different because graffiti artists need to see what audience they want to display their work for. Do they want their name to be known, or are they trying to pass a message on to others? I think that different areas tell different stories for different reasons.